package com.platform.data.handle.converter.impl;

import com.platform.data.common.CommonConstant;
import com.platform.data.handle.converter.AbstractDataTypeProcessHandler;
import com.platform.data.handle.converter.DataTypeEnum;

import java.util.Objects;
import java.util.regex.Matcher;

/**
 * 枚举值[整数]
 *
 * @author zhuweijun
 * @version 1.0.0
 * @since 2025/5/13 17:01
 */
public class EnumIntegerTypeProcessHandler extends AbstractDataTypeProcessHandler {

    /**
     * 枚举值[整数]
     *
     * @param typeEnum typeEnum
     * @param fieldName fieldName
     * @param fieldValue fieldValue
     * @return {@link Object}
     */
    @Override
    public Object process(DataTypeEnum typeEnum, String fieldName, String fieldValue) {
        // 内容匹配冒号（中英文）
        Matcher matcher = matcherValue(colonPattern, fieldValue);
        if(Objects.nonNull(matcher)){
            String trim = matcher.group(CommonConstant.ONE).trim();

            // 校验是否整数
            matcher = super.matcherValue(integerPattern, fieldValue);
            if(Objects.nonNull(matcher)){
                return Integer.valueOf(trim);
            }
            log.warn("EnumIntegerTypeProcessHandler.process|属性字段赋值，数据类型转换为整数类型，值不是导致转换失败，数据类型：{}, 属性名称：{}，属性值：{}",
                    typeEnum.getType(), fieldName, fieldValue);
            return trim;
        }
        return fieldValue;
    }
}
